#include <sxCube.h>

Sx::Graphics::Objects::Cube::Cube(float size) {
	this->size = size;
}

Sx::Graphics::Objects::Cube::~Cube() {}

bool Sx::Graphics::Objects::Cube::construct() { return true; }
void Sx::Graphics::Objects::Cube::update(float dt) { return; }

void Sx::Graphics::Objects::Cube::setSize(float size) {
	this->size = size;
}

float Sx::Graphics::Objects::Cube::getSize() const {
	return this->size;
}

Eigen::Vector3f Sx::Graphics::Objects::Cube::getCorner(bool x, bool y, bool z) {
	float p = std::abs(this->size / 2.0f);
	float n = -p;

	if ( x ) {
		if ( y ) {
			if ( z ) return Eigen::Vector3f(p, p, p);
			else return Eigen::Vector3f(p, p, n);
		}

		if ( z ) {
			if ( y ) return Eigen::Vector3f(p, n, p);
			else return Eigen::Vector3f(p, n, n);
		}
	}
	else {
		if ( y ) {
			if ( z ) Eigen::Vector3f(n, p, p);
			else Eigen::Vector3f(n, p, n);
		}

		if ( z ) {
			if ( y ) Eigen::Vector3f(n, n, p);
			else Eigen::Vector3f(n, n, n);
		}
	}
}
